package com.ruoyi.business.customer.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.ruoyi.business.base.JoBaseService;
import com.ruoyi.business.base.PageParam;
import com.ruoyi.business.customer.domain.JbFollowupRecord;
import com.ruoyi.business.customer.domain.dto.JbFollowupRecordDto;
import com.ruoyi.business.customer.domain.dto.JbFollowupRecordListDto;
import com.ruoyi.business.customer.domain.vo.JbFollowListVo;
import com.ruoyi.business.customer.domain.vo.JbFollowupRecordExportListVo;
import com.ruoyi.business.customer.domain.vo.JbFollowupRecordListVo;

import java.util.List;

/**
 * 跟进记录Service接口
 *
 * @author ruoyi
 * @date 2024-10-11
 */
public interface JbFollowupRecordService extends JoBaseService<JbFollowupRecord>
{
    /**
     * 查询
     * @param page
     * @param jbFollowupRecord
     * @return
     */
    IPage<JbFollowupRecordListVo> listData(IPage page, JbFollowupRecordListDto jbFollowupRecord);

    /**
     * 查询跟进计划查询存在数据的那一天
     * @param jbFollowupRecord
     * @return
     */
    List<JbFollowupRecord> listDayData(JbFollowupRecordListDto jbFollowupRecord);

    /**
     * 新增记录 同时新增下次计划
     * @param jbFollowupRecordDto
     * @return
     */
    Boolean saveInfo(JbFollowupRecordDto jbFollowupRecordDto);

    /**
     * 获取详情，转化名称，获取评论数量
     * @param id
     * @return
     */
    JbFollowupRecordListVo getDataInfo(Long id);

    /**
     * 记录查询
     * @param page
     * @param jbFollowupRecord
     * @return
     */
    IPage<JbFollowupRecordListVo> recordList(IPage page, JbFollowupRecordListDto jbFollowupRecord);

    /**
     * 记录查询
     * @param page
     * @param jbFollowupRecord
     * @return
     */
    List<JbFollowupRecordExportListVo> exportRecord(IPage page, JbFollowupRecordListDto jbFollowupRecord);
    /**
     * 修改记录 同时新增下次计划
     * @param jbFollowupRecordDto
     * @return
     */
    Boolean updateInfo(JbFollowupRecordDto jbFollowupRecordDto);

    /**
     * 跟进记录删除
     * @param id
     * @return
     */
    Boolean removeRecord(Long id);

    /**
     * 定时检查跟进计划的时间，是否到期
     * @return
     */
    Boolean taskStatus();

    /**
     * 计划提醒
     * @return
     */
    Boolean remind();

    /**
     * 跟进计划，超时多少天
     * @param pageParam
     * @param jbFollowupRecord
     * @return
     */
    IPage<JbFollowListVo> followupList(PageParam pageParam,JbFollowupRecord jbFollowupRecord);

}
